From bfd7137ffbcbd8caa531d7a47d799fefb6605a5a Mon Sep 17 00:00:00 2001 From: Thomas Wood Date: Thu, 7 Feb 2013 15:38:40 +0000 Subject: [PATCH] wayland: skip pointer and keyboard events without a surface Pointer and keyboard events can be received after the surface has been destroyed, in which case the surface will be NULL. https://bugzilla.gnome.org/show_bug.cgi?id=693338 --- gdk/wayland/gdkdevice-wayland.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index bb4ef0bebf..90ecb1777e 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -550,6 +550,9 @@ pointer_handle_enter (void *data, GdkWaylandDisplay *wayland_display = GDK_WAYLAND_DISPLAY (device->display); + if (!surface) + return; + _gdk_wayland_display_update_serial (wayland_display, serial); device->pointer_focus = wl_surface_get_user_data(surface); @@ -589,6 +592,9 @@ pointer_handle_leave (void *data, GdkWaylandDisplay *wayland_display = GDK_WAYLAND_DISPLAY (device->display); + if (!surface) + return; + _gdk_wayland_display_update_serial (wayland_display, serial); event = gdk_event_new (GDK_LEAVE_NOTIFY); @@ -777,6 +783,9 @@ keyboard_handle_enter (void *data, GdkWaylandDisplay *wayland_display = GDK_WAYLAND_DISPLAY (device->display); + if (!surface) + return; + _gdk_wayland_display_update_serial (wayland_display, serial); device->keyboard_focus = wl_surface_get_user_data(surface); @@ -808,6 +817,9 @@ keyboard_handle_leave (void *data, GdkWaylandDisplay *wayland_display = GDK_WAYLAND_DISPLAY (device->display); + if (!surface) + return; + _gdk_wayland_display_update_serial (wayland_display, serial); _gdk_wayland_window_remove_focus (device->keyboard_focus); -- 2.30.2